package com.yuxi.Dao;


import java.util.List;

import org.springframework.stereotype.Repository;

import com.yuxi.Entity.PowerUser;
import com.yuxi.Entity.UserInfo;
import com.yuxi.Entity.UserView;
import com.yuxi.Request.Page;
import com.yuxi.Request.UserQuery;

/**
 *信息操作接口
 * @author hunter
 * @version 1.0
 * 2016/07/18
 */



@Repository
public interface UserInfoDao {
	/**
	 * 通过UserInfoID获取UserInfo
	 * @param 	userId
	 * @return UserInfo 
	 * */
	public UserInfo getUser(Integer userId);
	/**
	 * 添加一个userInfo  并返回添加的实体类
	 * @param 	userId
	 * @return UserInfo 
	 * */
	public UserInfo addUser(UserInfo u);
	/**
	 * 删除一个userInfo  并返回删除的实体类
	 * @param 	u UserInfo实体类
	 * @return UserInfo 
	 * */
	public void deleteUser(UserInfo u);
	/**
	 * 修改一个userInfo  并返回修改的实体类
	 * @param  u  UserInfo实体类
	 * @return UserInfo 
	 * */
	public void modifly(UserInfo u);
	/**
	 * 用户登录 （通过工号 和密码）
	 * @param 	userAccount 工号
	 * @param   pwd 密码
	 * @return UserInfo 
	 * */
	public UserInfo login(String userAccount,String pwd);
	/**
	 * 根据角色列表获取用户
	 * @param RoleId
	 * @author wyd
	 * */
	public List<UserInfo> getUserByRole(Object[] RoleId);
	
	/**
	 * 根据条件查询用户创建的用户
	 * @param userQuery 查询条件
	 * @param userId 用户ID
	 * @return Page<UserView>
	 * @author wyd
	 * */
	public Page<UserView> getCreateUserList(UserQuery userQuery,int userId,Page<UserView> p);
	/**
	 * 根据用户名 或警号查询用户
	 * @param userAccountOrName
	 * @return Page<UserView>
	 * @author wyd
	 * */
	public Page<UserView> getUserList(String userAccountOrName);
	
	/**
	 * 根据用户名 或警号查询用户
	 * @param userAccountOrName
	 * @return List<UserInfo>
	 * @author wyd
	 * */
	public List<UserInfo> getUserListByUserAccountOrName(String userAccountOrName);
	/**
	 * 根据用户id查询用户信息
	 * @param userAccountOrName
	 * @return UserView
	 * @author hunter
	 * */
	public UserView getUserViewById(Integer id );
	
	/**
	 * 获取监区 监狱领导
	 * */
	public List<UserInfo> getPrisonHeader(int pId);
	
	/**
	 * 获取监区 监狱分管领导
	 * */
	public List<UserInfo> getPrisonViceHeader(int pId);
	
	
	/**
	 * 根据条件查询用户
	 * @param userQuery 查询条件
	 * @param userId 用户ID
	 * @return Page<UserView>
	 * @author wyd
	 * */
	public Page<UserView> getStruectureAllUser(UserQuery userQuery,Integer structureId, Page<UserView> p);
	
	public Page<UserView> getStruectureUserList(UserQuery userQuery,int positionId, Page<UserView> p);
	
	public UserView getUserViewByUserId(Integer id);
	
	public List<UserInfo> getALl();
}
